Los detalles sobre este paquete se encuentran en la Sección 6.9.4 , "Contenido de Glibc ".
El paquete Glibc contiene la librería C principal. Esta librería proporciona todas las rutinas básicas para la ubicación de memoria, búsqueda de directorios, abrir y cerrar archivos , la lectura y escritura de archivos , manejo de cadenas , coincidencia de patrones , aritmética , etc .
En algunos casos, particularmente en LFS 7.1 , las cabeceras rpc no se han instalado correctamente. Haz la prueba para ver si están instalados en el sistema host e instalarlas si no lo estuviesen:
if [ ! -r /usr/include/rpc/types.h ]; then su -c 'mkdir -pv /usr/include/rpc' su -c 'cp -v sunrpc/rpc/*.h /usr/include/rpc' fi
La documentación de Glibc recomienda construirlo fuera del directorio de fuentes, en un directorio de construcción dedicado
mkdir -v ../glibc-build cd ../glibc-build
A continuación, prepara Glibc para su compilación:
../glibc-2.19/configure \ --prefix=/tools \ --host=$LFS_TGT \ --build=$(../glibc-2.19/scripts/config.guess) \ --disable-profile \ --enable-kernel=2.6.32 \ --with-headers=/tools/include \ libc_cv_forced_unwind=yes \ libc_cv_ctors_header=yes \ libc_cv_c_cleanup=yes
El significado de las opciones de configure:
--host=$LFS_TGT,
--build=$(../glibc-2.19/scripts/config.guess)
El efecto combinado de estas opciones es que el sistema de construcción de Glibc se configura para compilación cruzada , utilizando el enlazador cruzado y compilador cruzado en /tools .
--disable-profile
Esto construye las librerías sin información de perfiles . Omite esta opción si planeas usar perfiles en las herramientas temporales.
--enable-kernel=2.6.32
Esto le indica a Glibc que compile la librería con soporte para 6.2.32 y posteriores núcleos de Linux . Soluciones provisionales para los núcleos antiguos no están habilitadas.
--with-headers=/tools/include
Esto le indica a Glibc que se compile contra las cabeceras recién instaladas en el directorio de herramientas , para que conozca exactamente las características del núcleo y pueda optimizarse correctamente .
libc_cv_forced_unwind=yes
El enlazador instalado durante Sección 5.4, " Binutils - 2.24 - Fase 1 ", fue compilado cruzadamente y , como tal, no se puede utilizar hasta que Glibc se ha instalado. Esto significa que la prueba de configuración para force-unwind support va a fracasar, ya que depende de un enlazador de trabajo . El libc_cv_forced_unwind = yes hace que la variable se pase con el fin de informar a configure que force-unwind support está disponible sin que tener que ejecutar la prueba.
libc_cv_c_cleanup=yes
De forma similar, pasamos libc_cv_c_cleanup = yes a través del script de configuración para que se salta la prueba y se configure C de forma limpia.
libc_cv_ctors_header=yes
Igualmente, pasamos libc_cv_ctors_header = yes a través del script de configuración para que se salte la prueba y se configure el soporte constructor de gcc.
Durante esta etapa, la siguiente advertencia puede aparecer:
configure: WARNING: *** These auxiliary programs are missing or *** incompatible versions: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.
La ausencia o incompatibilidad del programa msgfmt es generalmente inofensiva. Este programa msgfmt es parte del paquete Gettext que el sistema anfitrión debe proporcionar.
Compila el paquete:
make
Este paquete incluye un banco de prueba, sin embargo , no se puede ejecutar en este momento porque no tenemos un compilador C + + todavía.
El conjunto de pruebas también requiere datos de localización para ser instalado con el fin de ejecutarse con éxito. Los Datos Locales proporcionan información al sistema en cuanto a cosas tales como la fecha , la hora y los formatos de salida actualmenre aceptados por las utilidades del sistema . Si los bancos de pruebas no se ejecutan en este capítulo (según la recomendación ) , no hay necesidad de instalar ahora las locales . Los lugares apropiados se instalarán en el próximo capítulo . Para instalar las locales de Glibc de todos modos, siga las instrucciones de uso de la Sección 6.9, " Glibc- 2.19 ".
Instala el paquete:
make install
En este punto , es obligatorio parar y asegurarse de que las operaciones básicas (compilación y enlazado) de las nuevas herramientas funcionan como se esperaba. Para llevar a cabo una comprobación de validez , ejecute los siguientes comandos :
echo 'main(){}' > dummy.c $LFS_TGT-gcc dummy.c readelf -l a.out | grep ': /tools'
Si todo funciona correctamente, no debe haber errores y la salida del último comando debe ser de la forma:
[Requesting program interpreter: /tools/lib/ld-linux.so.2]
Tenga en cuenta que /tools/lib
, o
/tools/lib64
para equipos de 64 bits aparece como el prefijo de tu enlazador dinámico.
Si la salida no se muestra como arriba, o no hay salida alguna , algo está mal. Investiga y sigue los pasos para averiguar dónde está el problema y corregirlo. Este problema se debe resolver antes de continuar .
Una vez que todo esté bien, borra los ficheros de prueba:
rm -v dummy.c a.out
La construciión de Binutils de la sección después de la próxima servirán como una comprobación adicional de que las herramientas se han construido correctamente. Si Binutils no construye , es una indicación de que algo ha ido mal con el anterior Binutils , GCC, o instalaciones de glibc.
Los detalles sobre este paquete se encuentran en la Sección 6.9.4 , "Contenido de Glibc ".